#include "Sort.h"

void ArrPrint(int* arr,int n)
{
	for (int i = 0; i < n; i++)
	{
		printf("%d ", arr[i]);
	}
	printf("\n");
}
void HillSort(int* arr, int n)
{
	int gap = n / 3 + 1;
	for (int i = 1; i < n - gap; i++)
	{
		int emd = i-1;
		int tmp = arr[emd + gap];
		while (emd >= 0)
		{
			if (arr[emd] < tmp)
			{
				arr[emd + gap] = arr[emd];
				arr[emd] = tmp;
				emd -= gap;
			}
			else
			{
				break;
			}
		}
	}
	InsertSort(arr, n);
}

void InsertSort(int* arr, int n)
{
	for (int i = 1; i < n; i++)
	{
		int emd = i - 1;
		int tmp = arr[i];
		while (emd >= 0)
		{
			if (arr[emd] < tmp)
			{
				arr[emd + 1] = arr[emd];
				arr[emd] = tmp;
				emd--;
			}
			else
			{
				break;
			}
		}
	}
}
void swap(int* p1, int* p2)
{
	int tmp = *p1;
	*p1 = *p2;
	*p2 = tmp;
}
//void SelectSort(int* arr, int n)
//{
//	int j = 0;
//
//	int tmpmin = 0;
//	int tmpmax = 0;
//	for (j = 0; j < n; j++)
//	{
//		int emd = n - j;
//		int i = j;
//		while (i < emd-1)
//		{
//			if (arr[i] < arr[i + 1])
//			{
//				tmpmax = arr[i+1];
//
//			}
//			if (arr[i] > arr[i + 1])
//			{
//				tmpmin = arr[i + 1];
//			}
//			i++;
//		}
//
//		arr[j] = tmpmin;
//		arr[emd-1] = tmpmax;
//	}
//
//}
void SelectSort(int* arr, int n)
{
	int begine = 0;
	int emd = n - 1;
	while (begine < emd)
	{
		int max = begine;
		int min = begine;
		for (int i = begine; i < emd+1; i++)
		{
			if (arr[i] < arr[min])
			{
				min = i;
			}
			if (arr[i] > arr[max])
			{
				max = i;
			}
		}
	
		swap(&arr[max], &arr[emd]);
	/*	if (emd == min)
		{
			swap(&arr[max], &arr[begine]);
		}
		else
		{
			swap(&arr[min], &arr[begine]);
		}*/
		if (emd == min)
		{
			min = max;
		}
	
		
		swap(&arr[min], &arr[begine]);
		
	/*	if (max == begine)
		{
			swap(&arr[max], &arr[min]);
		}*/
		begine++;
		emd--;
	}
}
